2
תגובות

היי אשמח לעזרה

פתח alexmelo ,
היי חברים יש לי טופס צור קשר אני מעוניין לעשות שדה ניסתר ולבדק האם הוא מלא ,
במידה ולא אז אני יבצע את הבדיקות .
במידה והוא מלא אז אני יהרוג את הסקריפט הוא לא יעשה כלום .
משהו יכול לעזור לי תודה

ועוד שאלה קטנה האם אני צריך לעשות escaping לשדות גם אם אין שימוש בבסיס נתונים ?

2 תשובות

avatar ענה alexmelo ב 20 לינואר 2013 #

זה הקוד

if(isset($_POST['submit'])) {
     
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "[email protected]";
    $email_subject = "письмо от Техниона";
     
     
    function died($error) {
        // your error code can go here
        echo $error."<br /><br />";
        die();
    }
     
    // validation expected data exists
    if(!isset($_POST['name']) ||
        !isset($_POST['last_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['phone']) ||
        !isset($_POST['city'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');      
    }
     
    $first_name = trim(strip_tags($_POST['name'])); // required
    $last_name = trim(strip_tags($_POST['last_name'])); // required
    $email_from = trim(strip_tags($_POST['email'])); // required
    $telephone = trim(strip_tags($_POST['phone'])); // not required
    $city = trim(strip_tags($_POST['city'])); // required
     
    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= "<li class='error'>".$email_error."</li><br/>";
  }
    $string_exp = "/^[A-Za-z .-]+$/";
  if(!preg_match($string_exp,$first_name)) {
    $error_message .= "<li class='error'>".$name_error."</li><br/>";
  }
  if(!preg_match($string_exp,$last_name)) {
    $error_message .= "<li class='error'>".$last_name_error."</li><br/>";
  }
  if(strlen($city) < 2) {
    $error_message .= "<li class='error'>".$city_error."</li><br/>";
  }
 
 
    if( !preg_match("/^[0-9]{10}$/", $telephone) || strlen($telephone) < 10) {
    $error_message .= "<li class='error'>".$phone_error."</li><br/>";
  }
 
 
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = "Form details below.\n\n";
     
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
     
    $email_message .= "First Name: ".clean_string($first_name)."\n";
    $email_message .= "Last Name: ".clean_string($last_name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Telephone: ".clean_string($telephone)."\n";
    $email_message .= "city: ".clean_string($city)."\n";
 
     
     
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
echo"<li class='error2'>".$successfully_msg."</li><br/>";
die();
 }

avatar ענה intval ב 21 לינואר 2013 #

<?php

if(isset($_POST['submit']))
{
     
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "[email protected]";
    $email_subject = "письмо от Техниона";
     
     
    function died($error)
    {
        // your error code can go here
        echo $error."<br /><br />";
        die();
    }
   
   
    if(isset($_POST['hidden_field_name']) && '' !== trim($_POST['hidden_field_name']))
    {
    died('This field was supposed to be empty');
  }
     
     
    // validation expected data exists
    if(!isset($_POST['name'],$_POST['last_name'],$_POST['email'],$_POST['phone'],$_POST['city']))
    {
        died('We are sorry, but there appears to be a problem with the form you submitted.');      
    }
     
    $first_name = trim(strip_tags($_POST['name'])); // required
    $last_name = trim(strip_tags($_POST['last_name'])); // required
    $email_from = trim(strip_tags($_POST['email'])); // required
    $telephone = trim(strip_tags($_POST['phone'])); // not required
    $city = trim(strip_tags($_POST['city'])); // required
     
    $error_message = "";
   
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from))
  {
    $error_message .= "<li class='error'>".$email_error."</li><br/>";
  }
 
  $string_exp = "/^[A-Za-z .-]+$/";
  if(!preg_match($string_exp,$first_name))
  {
    $error_message .= "<li class='error'>".$name_error."</li><br/>";
  }
 
 
  if(!preg_match($string_exp,$last_name))
  {
    $error_message .= "<li class='error'>".$last_name_error."</li><br/>";
  }
 
  if(strlen($city) < 2)
  {
    $error_message .= "<li class='error'>".$city_error."</li><br/>";
  }
 
 
    if( !preg_match("/^[0-9]{10}$/", $telephone) || strlen($telephone) < 10)
    {
    $error_message .= "<li class='error'>".$phone_error."</li><br/>";
  }
 
 
  if(strlen($error_message) > 0)
  {
    died($error_message);
  }
 
 
  $email_message = "Form details below.\n\n";

  function clean_string($string)
  {
    $bad = array("content-type","bcc:","to:","cc:","href");
    return str_replace($bad,"",$string);
  }

  $email_message .= "First Name: ".clean_string($first_name)."\n";
  $email_message .= "Last Name: ".clean_string($last_name)."\n";
  $email_message .= "Email: ".clean_string($email_from)."\n";
  $email_message .= "Telephone: ".clean_string($telephone)."\n";
  $email_message .= "city: ".clean_string($city)."\n";
 
     
     
  // create email headers
  $headers = 'From: '.$email_from."\r\n".
  'Reply-To: '.$email_from."\r\n" .
  'X-Mailer: PHP/' . phpversion();
 
  // NEVER NEVER NEVER NEVER NEVER NEVER
  // NEVER EVER
  // NEVER EVER USE
  // DO YOU HEAR ME? NEEEEEEEEVER
  // USE THE @ sign
  // NEVER!!!
  // BUT..
  // NO, NO BUT. NO EVER.
  $sent = mail($email_to, $email_subject, $email_message, $headers);
 
  if(!$sent)
  {
      echo "Sorry, couldn't send your email";
  }
  else
  {
    echo"<li class='error2'>".$successfully_msg."</li><br/>";
  }
  die();
 }



שנית, אף פעם. אף פעם. אף פעם, בשום מצב שהוא, אל תעשה את הטעות הכי נוראית שאחרי זה שעות מתכנתים מנסים להבין איפה היא. אף פעם אל תשתמש בשטרודל @.

כנראה שאתה מנסה לשלוח אימייל מהמחשב הלוקאלי ולא משרת של חברת האחסון, בגלל זה אתה לא מקבל אותו.

רביעית, תכניס שדה בטופס. לבדוק האם מילאו את השדה הזה אפשר על ידי הפונקציה
isset($_POST['fieldname')

לבדוק שהתוכן שלו לא ריק אפשר על ידי השוואה עם מחרוזת ריקה
if('' === trim($_POST['fieldname'])

הכנסתי לך דוגמה לקוד.